作為運維工程師,IPTables 作為 Linux 系統的核心防火墻工具,其規則配置的合理性直接影響服務器安全與網絡性能。本文整理 25 個高頻場景規則示例,結合深度解析與解決方案,助你構建高效安全的網絡防護體系。
一、基礎規則配置
- 初始化防火墻
iptables -F && iptables -X && iptables -Z? # 清空所有規則
iptables -P INPUT DROP? # 設置默認策略為拒絕
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
解決方案:初始化規則鏈并設置嚴格默認策略,避免配置漏洞。
- 允許本地回環通信
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
?場景:保障本地進程間通信(如localhost服務調用)。
- 阻止特定 IP 訪問
iptables -A INPUT -s 192.168.1.100 -j DROP
解決方案:快速封禁惡意 IP,結合日志分析工具(如iptables -L -v)定位異常流量。
二、服務訪問控制
- 允許 SSH 訪問(僅指定網段)
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
場景:限制 SSH 登錄權限,僅允許公司內網 IP 訪問。
- 開放 Web 服務(HTTP/HTTPS)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
優化方案:使用multiport模塊合并規則:
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT
- 允許 DNS 查詢
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --sport 53 -j ACCEPT
解決方案:保障域名解析服務正常運行。
三、網絡安全防護
- 防范 DoS 攻擊
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
參數解析:限制每分鐘 25 個新連接,突發流量不超過 100 個。
- 阻止 ICMP 泛洪
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/second -j ACCEPT
?場景:防止 Ping 洪流導致網絡阻塞。
- 記錄丟棄數據包
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "DROPPED_PACKET: " --log-level 7
iptables -A LOGGING -j DROP
解決方案:通過 syslog 記錄丟棄包,便于安全審計。
四、網絡地址轉換(NAT)
- 端口轉發(SSH 映射)
iptables -t nat -A PREROUTING -p tcp --dport 422 -j DNAT --to-destination 192.168.1.200:22
iptables -A FORWARD -p tcp -d 192.168.1.200 --dport 22 -j ACCEPT
場景:將公網 422 端口映射到內網服務器 22 端口。
- 共享上網(SNAT)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
解決方案:內網設備通過防火墻共享公網 IP 訪問互聯網。
五、高級應用
- 負載均衡(HTTP 流量分發)
iptables -t nat -A PREROUTING -p tcp --dport 80 -m nth --counter 0 --every 3 --packet 0 -j DNAT --to-destination 192.168.1.101:80
iptables -t nat -A PREROUTING -p tcp --dport 80 -m nth --counter 0 --every 3 --packet 1 -j DNAT --to-destination 192.168.1.102:80
場景:將 HTTP 流量輪詢分發到兩臺后端服務器。
- 基于時間的訪問控制
iptables -A INPUT -p tcp --dport 22 -m time --timestart 08:00 --timestop 18:00 -j ACCEPT
解決方案:限制 SSH 僅在工作日辦公時間可用。
- 多網卡策略路由
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT? # 公網接口開放HTTP
iptables -A INPUT -i eth1 -p tcp --dport 8080 -j ACCEPT? # 內網接口開放管理端口
場景:根據流量來源接口實施差異化訪問控制。
六、規則管理與優化
- 保存與恢復規則
iptables-save > /etc/iptables/rules.v4? # 保存規則
iptables-restore < /etc/iptables/rules.v4? # 恢復規則
解決方案:避免重啟后規則丟失。
- 可視化規則鏈
使用iptable_vis工具生成流程圖:
iptables -L -n --line-numbers | iptable_vis -o iptables.png
工具優勢:直觀展示規則鏈邏輯,快速定位配8置錯誤。
?? 解決方案總結
場景 |
核心規則示例 |
工具 / 模塊 |
基礎防護 |
初始化規則、設置默認策略 |
iptables -F,?-P |
服務訪問控制 |
限制 SSH/HTTP 訪問源 IP、合并多端口規則 |
multiport |
安全防護 |
DoS 防范、ICMP 限速、日志記錄 |
limit,?LOG |
NAT 與端口轉發 |
端口映射、共享上網 |
DNAT,?MASQUERADE |
高級應用 |
負載均衡、時間控制、多網卡策略 |
nth,?time |
規則管理 |
保存恢復、可視化 |
iptables-save,?iptable_vis |